package com.water.tool;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密
 * 
 * @author whl
 * 
 */
public class Encode {

	public static String encode(String str, String algorithm) {
		if (str == null) {
			return null;
		}
		StringBuilder sb = new StringBuilder();// 声明并实例化StringBuilder类的对象

		try {
			MessageDigest code = MessageDigest.getInstance(algorithm);// 创建使用MD5加密算法的对象
			code.update(str.getBytes());// 将要加密信息中的所有字节提供给该对象
			// 调用digest()方法完成消息摘要的计算，并以字节数组的形式返回消息摘要
			byte[] bs = code.digest();
			// 将加密后的字节数组转换成十六进制的字符串，行程最终的密文
			for (int i = 0; i < bs.length; i++) {
				int v = bs[i] & 0xFF;
				if (v < 16) {
					sb.append(0);
				}
				sb.append(Integer.toHexString(v));
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return sb.toString().toUpperCase();

	}

	public static String encodeByMD5(String str) {
		return encode(str, "MD5");
	}

}
